1   /*
2    * Copyright (C) 2008 The Guava Authors
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.google.common.collect;
18  
19  import com.google.common.annotations.GwtCompatible;
20  import com.google.common.collect.testing.MapInterfaceTest;
21  
22  import java.util.Collection;
23  import java.util.Map;
24  
25  /**
26   * Test {@link Multimap#asMap()} for a {@link Multimaps#forMap} multimap with
27   * {@link MapInterfaceTest}.
28   *
29   * @author Jared Levy
30   */
31  @GwtCompatible
32  public class ForMapMultimapAsMapImplementsMapTest
33      extends AbstractMultimapAsMapImplementsMapTest {
34  
35    public ForMapMultimapAsMapImplementsMapTest() {
36      super(true, true, true);
37    }
38  
39    @Override protected Map<String, Collection<Integer>> makeEmptyMap() {
40      Map<String, Integer> map = Maps.newHashMap();
41      return Multimaps.forMap(map).asMap();
42    }
43  
44    @Override protected Map<String, Collection<Integer>> makePopulatedMap() {
45      Map<String, Integer> map = Maps.newHashMap();
46      map.put("foo", 1);
47      map.put("bar", 2);
48      map.put("cow", 3);
49      return Multimaps.forMap(map).asMap();
50    }
51  
52    @Override public void testEntrySetRemoveAllNullFromEmpty() {
53      try {
54        super.testEntrySetRemoveAllNullFromEmpty();
55      } catch (RuntimeException tolerated) {
56        // GWT's HashMap.entrySet().removeAll(null) doesn't throws NPE.
57      }
58    }
59  
60    @Override public void testEntrySetRetainAllNullFromEmpty() {
61      try {
62        super.testEntrySetRetainAllNullFromEmpty();
63      } catch (RuntimeException tolerated) {
64        // GWT's HashMap.entrySet().retainAll(null) doesn't throws NPE.
65      }
66    }
67  
68    @Override public void testKeySetRemoveAllNullFromEmpty() {
69      try {
70        super.testKeySetRemoveAllNullFromEmpty();
71      } catch (RuntimeException tolerated) {
72        // GWT's HashMap.keySet().removeAll(null) doesn't throws NPE.
73      }
74    }
75  
76    @Override public void testKeySetRetainAllNullFromEmpty() {
77      try {
78        super.testKeySetRetainAllNullFromEmpty();
79      } catch (RuntimeException tolerated) {
80        // GWT's HashMap.keySet().retainAll(null) doesn't throws NPE.
81      }
82    }
83  
84    @Override public void testValuesRemoveAllNullFromEmpty() {
85      try {
86        super.testValuesRemoveAllNullFromEmpty();
87      } catch (RuntimeException tolerated) {
88        // GWT's HashMap.values().removeAll(null) doesn't throws NPE.
89      }
90    }
91  
92    @Override public void testValuesRetainAllNullFromEmpty() {
93      try {
94        super.testValuesRemoveAllNullFromEmpty();
95      } catch (RuntimeException tolerated) {
96        // GWT's HashMap.values().retainAll(null) doesn't throws NPE.
97      }
98    }
99  }